MySQLの設定
 

概要:MySQL(マイエスキューエル)は、世界中で最もよく利用されているオープンソースのリレーショナル型データベースの一つで、高速で使いやすいことが特徴です。
VPSには既にMySQLがインストールされているので、設定を修正します。データベースは既存のものを使用します。また、MySQL用GUI設定ツールであるphpMyAdminが導入済ですがセキュリティー対策として使用できないようにします。
データベースの自動バックアップ運用設定をします。

1. MySQLの確認

# yum list mysql-server ← mysql-serverの確認
Loaded plugins: downloadonly, fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Installed Packages
mysql-server.x86_64                         5.1.61-4.el6                           @base
Available Packages
mysql-server.x86_64                         5.1.67-1.el6_3

2. MySQL設定
初期設定の内容を確認をします。

# view /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


コンフィギュレーション設定サンプルのファイルは、/usr/share/mysql にあります。
下表はそれぞれのファイルの使用用途です。下表はMySQLをメインに使う場合の設定なので、他のサービスと併用する場合は、ランクを下げた設定とします。

ファイル名使用用途
my-small.cnf64MB以下のメモリを搭載したPC
my-medium.cnf128MB以下のメモリを搭載したPC
my-large.cnf512MB以下のメモリを搭載したPC
my-huge.cnf1GB~2GB以下のメモリを搭載したPC
my-innodb-heavy-4G.cnf4GBのメモリとInnoDBで作成されたデータベースによって構築されたPC

このファイルを目的に合わせて、/etc/my.cnf として保存します。

# mv /etc/my.cnf /etc/my.cnf.org   ← 元の設定ファイルをリネームしてバックアップします。
# cp /usr/share/mysql/my-small.cnf /etc/my.cnf ← my-small.cnfの例の場合
# vi /etc/my.cnf ← 追加のMySQL設定のためにファイルを編集する。
[client] ← clientセクション
default-character-set = utf8 ← 追加(MySQLクライアントの文字コードをUTF-8にする)

[mysqld] ← mysqldセクション
skip-innodb ← INNODBを使用しない場合追加する。今回このオプションは追加しない。
INNODBを使用する場合は以下のようにinnodb_xxxxのオプションのコメントを外し、稼動状況に
より値を チューニングする。
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql ← Defaultのまま。
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql ← Defaultのまま。
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 10 ← 10秒に設定
innodb_file_per_table         ← innodbのファイルをテーブル毎に作成する設定を追加
character-set-server = utf8    ← 追加(MySQLサーバーの文字コードをUTF-8にする)
                                   MySQL5.5以降 default-character-setではなく character-set-serverに変わりました。
character-set-server = utf8
[mysql] ← mysqlセクション
default-character-set = utf8  ← 追加(MySQLコマンドラインツールの文字コードをUTF-8にする)

注:/etc/rc.d/init.d/mysqldはmy.cnf中にdatadirの設定が無い場合datadirを/var/lib/mysqlに設定する。また、$datadir/mysqlのディレクトリーが無い場合、データベースの初期化(/usr/bin/mysql_install_db)を起動する。

3. MySQL再起動

# /etc/rc.d/init.d/mysqld restart ← MySQL再起動
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

4. MySQLのrootパスワード設定
rootのパスワードは事前にVPSの会社から連絡されていて、これを変更します。

# mysql -u root -ppasswd mysql ← DB mysqlに接続
又は
# mysql -u root -h host.local.com -ppasswd mysql
mysql> SELECT host,user,password from user;
+----------------+------+-------------------+
| host           | user | password          |
+----------------+------+-------------------+
| localhost      | root | *68D4F47C49A579C9 |
| 127.0.0.1      | root | *68D4F47C49A579C9 |
| localhost      |      |                   |
| host.local.com |      |                   |
+----------------+------+-------------------+
4 rows in set (0.00 sec)

mysql> set password for root@'localhost'=password('new_passwd');
Query OK, 0 rows affected (0.00 sec)
mysql> set password for root@127.0.0.1=password('new_passwd');
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT host,user,password from user;
+----------------+------+-------------------+
| host           | user | password          |
+----------------+------+-------------------+
| localhost      | root | *39F8CE56DB2751B4 |
| 127.0.0.1      | root | *39F8CE56DB2751B4 |
| localhost      |      |                   |
| host.local.com |      |                   |
+----------------+------+-------------------+
4 rows in set (0.00 sec)

5. 不要ユーザの削除
 上記で表示されているユーザ名無しの匿名ユーザを削除します。

mysql> DELETE FROM user where user='';
Query OK, 2 rows affected (0.00 sec)
mysql> SELECT host,user,password from user;
+----------------+------+-------------------+
| host           | user | password          |
+----------------+------+-------------------+
| localhost      | root | *39F8CE56DB2751B4 |
| 127.0.0.1      | root | *39F8CE56DB2751B4 |
+----------------+------+-------------------+
2 rows in set (0.00 sec)

6. 不要データベースの削除  デフォルトでtestという空のデータベースが作成されていますが、不要なので削除します。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.00 sec)

mysql> drop database test; ← testデータベースの削除
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
+--------------------+
2 rows in set (0.00 sec)

7. 文字コードの確認  文字コードが設定通りになっているか確認します。

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
 

8.phpMyAdminの無効化
 セキュリティー対策としてphpMyAdminを無効化しておきます。
httpdにあるphpmyadmin.confをリネームして無効にします。

# cd /etc/httpd/conf.d
# mv phpmyadmin.conf phpmyadmin.conf.org
# /etc/rc.d/init.d/httpd reload
 

最終更新のRSS
Last-modified: 2014-03-11 (火) 02:00:03 (3700d)